package com.itextpdf.text.pdf;
import java.io.ByteArrayOutputStream;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.itextpdf.text.io.RandomAccessSourceFactory;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
public class RandomAccessFileOrArrayTest {
byte[] data;
RandomAccessFileOrArray rafoa;
@Before
public void setUp() throws Exception {
ByteArrayOutputStream os = new ByteArrayOutputStream();
for (int i = 0; i < 10000; i++){
os.write(i);
}
data = os.toByteArray();
rafoa = new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(data));
}
@After
public void tearDown() throws Exception {
}
@Test
public void testPushback_byteByByte() throws Exception {
Assert.assertEquals(data[0], (byte)rafoa.read());
Assert.assertEquals(data[1], (byte)rafoa.read());
byte pushBackVal = (byte)(data[1] + 42);
rafoa.pushBack(pushBackVal);
Assert.assertEquals(pushBackVal, (byte)rafoa.read());
Assert.assertEquals(data[2], (byte)rafoa.read());
Assert.assertEquals(data[3], (byte)rafoa.read());
}
@Test
public void testSimple() throws Exception {
for(int i = 0; i < data.length; i++){
Assert.assertEquals(data[i], (byte)rafoa.read());
}
}
@Test
public void testSeek() throws Exception {
RandomAccessFileOrArray rafoa = new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(data));
rafoa.seek(72);
for(int i = 72; i < data.length; i++){
Assert.assertEquals(data[i], (byte)rafoa.read());
}
}
@Test
public void testFilePositionWithPushback() throws Exception {
RandomAccessFileOrArray rafoa = new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(data));
long offset = 72;
rafoa.seek(offset);
Assert.assertEquals(offset, rafoa.getFilePointer());
byte pushbackVal = 42;
rafoa.pushBack(pushbackVal);
Assert.assertEquals(offset-1, rafoa.getFilePointer());
}
}